package busquedas;

import asientos.Vuelo;

import java.util.ArrayList;
import java.util.Comparator; 
import java.util.List;

import facade.RegistroAsientosComprados;


public class OrdenPorPopularidad extends Orden{
	private RegistroAsientosComprados registroAsientosComprados;
	
	public OrdenPorPopularidad(){
		this.setRegistroAsientosComprados(RegistroAsientosComprados.getInstance());		
		
	}
	
	public void ordenar(List<Vuelo> asientos){
		List<Vuelo> vuelosAOrdenar = new ArrayList<Vuelo>();
		List<Vuelo> vuelosSinAsientosComprados= new ArrayList<Vuelo>();
		
		for (int i = 0; i < asientos.size(); i++) {
			if(registroAsientosComprados.tenesAlVuelo(asientos.get(i).getCodigoDeVuelo())){
				vuelosAOrdenar.add(asientos.get(i));				
			}else{
				vuelosSinAsientosComprados.add(asientos.get(i));
			}			
		}
		super.ordenar(vuelosAOrdenar);
		asientos.clear();
		asientos.addAll(vuelosAOrdenar);
		asientos.addAll(vuelosSinAsientosComprados);		
	}

	
	public Comparator<Vuelo> obtenerOrdenador(){
		Comparator<Vuelo> comparator = new Comparator<Vuelo> () {
			public int compare(Vuelo asiento1, Vuelo asiento2) {
				double a1 = asiento1.getPopularidad();
				double a2 = asiento2.getPopularidad();
				return Double.compare(a2, a1);
			};
		};
	return comparator;
	}

	public void setRegistroAsientosComprados(RegistroAsientosComprados registroAsientosComprados) {
		this.registroAsientosComprados = registroAsientosComprados;
	}

	public RegistroAsientosComprados getRegistroAsientosComprados() {
		return registroAsientosComprados;
	}
}